package com.dingding.manager.modules.system.service;

import com.dingding.manager.common.beans.sys.SysUser;
import com.dingding.manager.common.dao.Page;
import com.dingding.manager.modules.system.dto.user.ReqAddUserDTO;
import com.dingding.manager.modules.system.dto.user.ReqUserListDTO;
import com.dingding.manager.modules.system.dto.user.ResUserDTO;
import com.dingding.manager.modules.system.dto.user.UserInfo;

/**
* @ClassName: UserService 
* @Description: 用户管理service
* @author SUNZHICHENG 
* @date 2016年12月1日 下午1:41:29 
* @version V2.6.2
 */
public interface UserService {
	
	/**
	 * @Description: 根据用户id查询用户信息        
	 * @date 2016年12月1日 下午2:08:23
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public ResUserDTO getUserById(Integer userId);
	
	/**
	 * @Description: 根据用户名获取用户信息
	 * @param name 用户名     
	 * @date 2016年12月2日 下午3:10:51
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public SysUser getUserByName(String name);
	
	/**
	 * @Description:根据用户名获取用户常用信息       
	 * @date 2016年12月4日 下午5:17:44
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public UserInfo getUserInfoByName(String name);
	
	
	
	/**
	 * @Description: 查询所有用户列表或按照条件查询用户列表
	 * @param condition  查询条件 （此条件可为空）      
	 * @date 2016年12月1日 下午2:11:26
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public Page<ResUserDTO> getUserList(ReqUserListDTO reqUserListDTO,Integer start, Integer length);
	
	
	/**
	 * @Description: 添加用户
	 * @date 2016年12月8日 上午10:49:36
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public void addUser(ReqAddUserDTO reqAddUserDTO);
		
	
	/**
	 * @Description: 修改用户信息
	 * @date 2016年12月1日 下午2:28:00
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public void modifyUser(ReqAddUserDTO reqAddUserDTO,Integer userId);
	
	/**
	 * @Description: 删除用户信息
	 * @param userId 用户id       
	 * @date 2016年12月1日 下午2:33:16
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public boolean deleteUser(Integer userId); 
	
	
	/**
	 * @Description: 修改用户是否可用的状态
	 * @param userId  用户id      
	 * @date 2016年12月1日 下午2:30:19
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	
	public boolean ModifyUserState(Integer userId,Integer state);
	
	/**
	 * @Description:修改密码 
	 * @date 2016年12月14日 下午4:47:09
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	public void updatePassWord(Integer userId, String newPwd);
}
